1. Field of the Invention
This invention relates generally to computer network data traffic and, more particularly, to computers that service and manage network requests for data files.
2. Description of the Related Art
To enable sharing of data among computer users, most computer systems in use today are connected to a computer network. Computers in an office, for example, may be connected over a local area network (LAN) to gain access to a server computer, which manages common data storage. As used herein, a server refers to a computer that services and manages requests for documents or data files from network computers utilizing wired and wireless communication networks. In the case of an Internet server, the computer network is the Internet. The Internet is a computer network in which literally millions of user computers communicate with server computers over a widely distributed network.
An Internet server may, for example, provide services such as servicing and managing requests for hypertext mark-up language (HTML) Web pages, providing and managing access to data bases, providing and managing access to News servers, Multimedia (including video and audio) servers, and Mail servers, as well as managing access to and functioning of e-commerce services. Some servers route such requests to an appropriate computer within a cluster of computers, each of which performs one of these server functions. The cluster of computers is generally referred to as a server farm.
The number of people using the Internet has been growing at a very fast rate, while the services provided over the Internet are increasingly becoming mission critical. Hence, enabling high performance, reliability, and availability, as well as the creation of management tools, have become key issues in the development and maintenance of Internet servers. The current approach for handling these issues from the server perspective is based on the concept of load balancing. The key to the load balancing approach is to handle the various network requests with a system called a load balancer, which is either a hardware device similar to a network router or a server computer executing load balancing software.
FIG. 1 illustrates an Internet server farm 102 that is served by a load balancer 104 computer. The server farm, for example, includes computers that operate as Web servers (for Web page requests) and as e-commerce servers 106, mail servers and news servers 108, and data base servers and multimedia servers 110. The load balancer 104 acts as a dispatcher to route data traffic it receives from the Internet 112 via a firewall 114. That is, the load balancer dispatches requests from the Internet to the appropriate server in the server farm 102, based on server function, availability, and load.
Servers that operate as load balancers may be obtained from or configured with software from a variety of vendors. For example, load balancer vendors include: Cisco Systems, Inc. of San Jose, Calif., USA; F5 Networks, Inc. of Seattle, Wash., USA; and Resonate, Inc. of Sunnyvale, Calif., USA.
Conventionally, load balancing systems comprise a single computer system acting as a dispatcher or primary active dispatcher, with a xe2x80x9chotxe2x80x9d stand-by dispatcher that can take over the functioning of the primary dispatcher in the event that the primary dispatcher fails. This solution has a number of potential problems. First, the traffic between the internal and external networks (that is, from the load balancer toward the Internet and from the load balancer toward the server farm) goes through a single point that can become a bottleneck with respect to bandwidth performance. This situation becomes worse as the number of servers in the server farm increases and as the amount of traffic being handled increases. In addition, the primary active load balancer is a single point of failure in the case that there is no stand-by dispatcher available. When there is a stand-by dispatcher and a primary dispatcher failure occurs, the long reconfiguration time of the stand-by dispatcher can severely affect the quality of service for network users. Finally, conventional load balancing systems do not typically maintain the network connection between client machines and servers in the event of a server failure. This can require client machines to repeat their requests for data, reopening the network connection. All of these situations result in slowed responses or complete failures in response to network requests for Web pages and other data.
From the discussion above, it should be apparent that there is a need for a system that provides a scalable load balancing solution for server farms and also provides reliable network communications. The present invention fulfills this need.
The present invention provides a scalable, distributed, highly available, load balancing server system having multiple machines functioning as a front server layer between the network and a back-end server layer having multiple machines functioning as Web file servers, FTP servers, or other application servers and provides a convenient graphical user interface (GUI) for operating the system. The front layer machines comprise a server cluster that performs fail-over and dynamic load balancing for both server layers. The operation of the servers on both layers is monitored, and when a server failure at either layer is detected, the system automatically shifts network traffic from the failed machine to one or more operational machines, reconfiguring front-layer servers as needed without interrupting operation of the server system. The server system automatically accommodates additional machines in the server cluster, without service interruption. A system constructed in accordance with the invention provides a front layer server cluster that manages multiple network addresses and ensures availability of all network addresses assigned to the front layer at all times. The system operates with a dynamic reconfiguration protocol that permits reassignment of network addresses to the front layer machines. The front layer machines perform their operations without breaking network communications between clients and servers, and without rebooting of computers. In this way, the system provides reliable network communication in a scalable load balancing solution for server farms.
In one aspect of the invention, a front layer server cluster constructed in accordance with the invention provides a resilient network connection in which network addresses can be moved among the cluster machines without breaking network connections between clients and the servers. The server cluster also provides a distributed network address translation (NAT) function among the front layer machines. In another aspect of the server cluster, servers can be dynamically added and deleted from the cluster without complicated configuration operations for the cluster. The server cluster also provides a Highly Available Internet Link so that transparent Web server fail-over can be achieved.
The server cluster may manage network address assignments and route network traffic, operating as a gateway. In that type of arrangement, the server cluster provides management of virtual network addresses such that network address assignments can be moved from gateway to gateway without requiring rebooting. Finally, the system provides symmetric routing of network traffic, guaranteeing that the incoming and outgoing traffic of the same network connection goes through the same front-layer server.
In accordance with the invention, a distributed server cluster for computer network data traffic dynamically reconfigures traffic assignments among multiple server machines for increased network availability. If one of the servers becomes unavailable, traffic assignments are moved among the multiple servers such that network availability is substantially unchanged. The front-layer servers of the server cluster communicate with each other such that automatic, dynamic traffic assignment reconfiguration occurs in response to machines being added and deleted from the cluster, with no loss in functionality for the cluster overall, in a process that is transparent to network users, thereby providing a distributed server system functionality that is scalable. Thus, operation of the distributed server cluster remains consistent as machines are added and deleted from the cluster. Each machine of the distributed cluster can continue with any applications it may be running, such as for implementing its server functioning, while participating in the distributed server cluster and dynamic reconfiguration processing of the present invention. In this way, the invention substantially maintains network availability regardless of machine failures, so that there is no single point of failure and no lapse in server cluster functionality.
In one aspect of the invention, the front-layer servers of the distributed server cluster communicate with each other by passing a Group Membership protocol word among the server cluster machines over a subnet network with which they are connected. The protocol word is used to inform the distributed server cluster servers of the cluster status, including the status of individual machines, in a token ring arrangement. Thus, each machine of the cluster becomes aware of any problem with any of the other machines in the cluster and is aware of the operational status and application data of each machine. With such knowledge, the machines will individually determine the traffic load being borne by the other machines. If any one machine observes that another machine is handling an excessive amount of network traffic, the observing machine will take on some of the traffic from the overloaded machine, thereby performing a load balancing operation. The consistent sharing of the application data enables the key distributed functionalities of the cluster.
In another aspect of the invention, a user can configure and monitor a machine of the distributed server cluster from any other machine of the cluster, and also can perform such configuration and monitoring from a remote location. Such operations can be conducted through a command line interface or through a graphical user interface (GUI) that permits real time changes in many operational parameters of the cluster.
Other features and advantages of the present invention should be apparent from the following description of the preferred embodiments, which illustrate, by way of example, the principles of the invention.